Enterprise database systems store data related to many aspects of a business enterprise. Every transaction (where “transaction” refers to a set of operations) against the data stored in database causes a log record to be written into a transaction log. The log record typically describes the transaction and its effect on the data. The log records of the transaction log may therefore be used to recover from errors or to restore the database to a prior state.
Due to the importance of ensuring durability of the transaction log, systems are provided to replicate a log record written to a primary host on one or more other secondary hosts. A replication protocol is used to ensure that the writes are atomic (i.e., once a write has been acknowledged as successful all subsequent read requests will return that value) and meet any durability guarantees. The commonly-used two-phase commit protocol includes one two-message round trip in which a primary host issues an instruction to write data and the instruction is acknowledged by a secondary host, and a second two-message round trip in which the primary host instructs the secondary host to commit the write (i.e., make it durable) and the secondary host acknowledges that the write has become durable. To improve throughput and latency, it is desirable to achieve results similar to the two-phase commit protocol while requiring fewer messages.